There has been a significant increase of late in consumer demand for the use of virtual machines (VM's) or virtual appliances (VA's) (both of which terms are used interchangeably herein) stored in a cloud network. Requests can typically be made for a VA from a cloud delivery location (e.g., a location at which requests from individual users can be received and serviced), and the VA is accordingly delivered from a corresponding development location. Advantages of such an arrangement are clear in accordance with advantages of a cloud network in general, in that significant storage space at the individual user nodes (e.g., computers) is not needed for hosting or storing a program or other appliance corresponding to a VA that can be requested or ordered from the cloud.
For its part, however, the provisioning of a VA from the cloud takes up its own associated degree of time and resources, whereby apparent advantages of “on demand” or “pay as you go” facilities can practically be lost. Particularly, significant time can be taken in preparing a VM image with an associated software stack, transferring the image to a host capable of providing hardware resources required by the VM, booting VM, and configuring and starting the associated software components.
It can be recognized that since the number of image templates grows exponentially with time, it is not feasible to store all VM templates on each node that might demand or make use of them. Thus, VM or VA template images can be cached close to a cloud delivery location to assist in rapidly servicing a user request for provisioning a VA. This fully recognizes that network-related costs of transferring an image from cache to a delivery location, and thence to an actual node where the image will run, will be negligible in comparison with those involved in transferring from a (cloud-based) VA development location to the cloud delivery location.
It is conceivable to use overlays or snapshots of VM images, but this still entails keeping all the image templates at each of the nodes or at a caching location. Bounded local storage certainly can apply constraints to such an effort while, in any event, if a raw image is not used there is the added implication of using a software layer on top of a given image format, thereby introducing additional delays and possible errors.